package schema

import (
	"time"
)

// Set 系统设置对象
type Set struct {
	ID        string    `json:"id"`                                    // 唯一标识
	Name      string    `json:"name" binding:"required"`               // 名称
	Category  string    `json:"category" binding:"required"`           // 分类
	Type      int       `json:"type" binding:"required,max=3,min=1"`   // 类型(1:公开 2:私有 3:用户)
	Key       string    `json:"key" binding:"required"`                // 键
	Value     string    `json:"value" binding:"required"`              // 键值
	Memo      string    `json:"memo"`                                  // 备注
	Status    int       `json:"status" binding:"required,max=2,min=1"` // 状态(1:启用 2:禁用)
	Creator   string    `json:"creator"`                               // 创建者
	CreatedAt time.Time `json:"created_at"`                            // 创建时间
	UpdatedAt time.Time `json:"updated_at"`                            // 更新时间
}

// SetUpdate 系统设置对象
type SetUpdate struct {
	ID        string    `json:"id"`                                     // 唯一标识
	Name      string    `json:"name" binding:"omitempty"`               // 名称
	Category  string    `json:"category" binding:"omitempty"`           // 分类
	Type      int       `json:"type" binding:"omitempty,max=3,min=1"`   // 类型(1:公开 2:私有 3:用户)
	Key       string    `json:"key" binding:"omitempty"`                // 键
	Value     string    `json:"value" binding:"omitempty"`              // 键值
	Memo      string    `json:"memo"`                                   // 备注
	Status    int       `json:"status" binding:"omitempty,max=2,min=1"` // 状态(1:启用 2:禁用)
	Creator   string    `json:"creator"`                                // 创建者
	CreatedAt time.Time `json:"created_at"`                             // 创建时间
	UpdatedAt time.Time `json:"updated_at"`                             // 更新时间
}

func (a *SetUpdate) ToSet() *Set {
	return &Set{
		ID:        a.ID,
		Name:      a.Name,
		Category:  a.Category,
		Type:      a.Type,
		Key:       a.Key,
		Value:     a.Value,
		Memo:      a.Memo,
		Status:    a.Status,
		Creator:   a.Creator,
		CreatedAt: a.CreatedAt,
		UpdatedAt: a.UpdatedAt,
	}
}

// SetQueryParam 查询条件
type SetQueryParam struct {
	PaginationParam
	LikeName string `form:"name"`     // 名称
	Name     string `form:"name"`     // 名称
	Category string `form:"category"` // 分类
	Type     int    `form:"type"`     // 类型(1:公开 2:私有 3:用户)
	Key      string `form:"key"`      // 键
	Value    string `form:"value"`    // 键值
	LikeMemo string `form:"memo"`     // 备注
	Memo     string `form:"memo"`     // 备注
	Status   int    `form:"status"`   // 状态(1:启用 2:禁用)
	Creator  string `form:"creator"`  // 创建者

}

// SetQueryOptions 查询可选参数项
type SetQueryOptions struct {
	OrderFields []*OrderField // 排序字段
}

// SetQueryResult 查询结果
type SetQueryResult struct {
	Data       Sets
	PageResult *PaginationResult
}

// Sets 系统设置列表
type Sets []*Set
